home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / pcl / docs.lha / latex-CLTL-sty / more-info.txt / node1_mn.html < prev    next >
Text File  |  1991-07-02  |  3KB  |  70 lines

  1.  
  2. <H1><A ID="SECTION00100000000000000000"><tex2html_anchor_invisible_mark></A>
  3. <A ID="CONTRL"><tex2html_anchor_mark></A><BR>
  4. Control Structure
  5. </H1>
  6.  
  7. <P>
  8. Common Lisp provides a variety of special structures for organizing
  9. programs.  Some have to do with flow of control (control structures),
  10. while others control access to variables (environment structures).
  11. Some of these features are implemented as special forms;
  12. others are implemented as macros, which typically expand into
  13. complex program fragments expressed in terms of special forms
  14. or other macros.
  15.  
  16. <P>
  17. Function application is the primary method for construction of Lisp
  18. programs.  Operations are written as the application of a function
  19. to its arguments.  Usually, Lisp programs are written as a large collection
  20. of small functions, each of which implements a simple operation.
  21. These functions operate by calling one another, and so larger
  22. operations are defined in terms of smaller ones.
  23. Lisp functions may call upon themselves recursively,
  24. either directly or indirectly.
  25.  
  26. <P>
  27. <BR>
  28. <tex2html_image_mark>#new4#
  29. <BR>
  30.  
  31. <P>
  32. While the Lisp language
  33. is more applicative in style than statement-oriented, it
  34. nevertheless provides many operations that produce side effects and
  35. consequently requires constructs for controlling the sequencing of
  36. side effects.  The construct
  37. <#9#>progn<#9#>, which is roughly equivalent to an Algol <#10#><B>begin</B><#10#>-<#11#><B>end</B><#11#>
  38. block with all its semicolons, executes a number of forms sequentially,
  39. discarding the values of all but the last.
  40. Many Lisp control constructs
  41. include sequencing implicitly, in which case they are said to
  42. provide an ``implicit <#12#>progn<#12#>.''
  43. <#3354#>implicit <#13#>progn<#13#><#3354#>
  44. Other sequencing constructs include <#14#>prog1<#14#> and <#15#>prog2<#15#>.
  45.  
  46. <P>
  47. For looping, Common Lisp provides the general iteration facility
  48. <#16#>do<#16#> as well as a variety
  49. of special-purpose iteration facilities for iterating or mapping
  50. over various data structures.
  51.  
  52. <P>
  53. Common Lisp provides the simple one-way conditionals <#17#>when<#17#> and <#18#>unless<#18#>,
  54. the simple two-way conditional <#19#>if<#19#>, and the more general multi-way
  55. conditionals such as <#20#>cond<#20#> and <#21#>case<#21#>.  The choice of which form
  56. to use in any particular situation is a matter of taste and
  57. style.
  58.  
  59. <P>
  60. Constructs for performing non-local exits with various scoping
  61. disciplines are provided: <#22#>block<#22#>, <#23#>return<#23#>,
  62. <#24#>return-from<#24#>,
  63. <#25#>catch<#25#>, and <#26#>throw<#26#>.
  64.  
  65. <P>
  66. The multiple-value constructs provide an efficient way for a function
  67. to return more than one value; see <#27#>values<#27#>.
  68.  
  69. <P>
  70.